home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 6
/
FM Towns Free Software Collection 6.iso
/
t_os
/
wink24
/
src
/
cdplay2.c
< prev
next >
Wrap
Text File
|
1993-07-08
|
6KB
|
230 lines
#include <stdio.h>
#include <stdlib.h>
#include <cdrfrb.h>
#include <snd.h>
#include "defs.h"
extern BOOL Input();
extern void wrtstr();
extern int Sel_menu();
extern char *SPCSTR;
/* --------------------- EUP play 92.03.30 ------------------ */
extern void runeup(); /* customaized by YAMA */
extern void stopeup(); /* customaized by YAMA */
/* ---------------------------------------------------------- */
/* --------------- RED2 Like 92.01.31 Pumpkin ------------- */
extern void Dsp_vram();
extern UCHAR vram[];
int cd_m_stat = FALSE;
/* ---------------------------------------------------------- */
typedef struct TIMEADRS CDTIME;
static short cd_act=FALSE;
static int type=0,strt=0,endt=0;
static int vol=64,sts=0,no=0,acv=0;
static CDTIME st,ed;
static CDTIME *track=NULL;
/* ------------------ CD No Stop 91.10.18 Pumpkin ----------- */
int cd_stop = TRUE;
/* ---------------------------------------------------------- */
int CD_open(void)
{
int i;
CDTIME disc;
if ( track == NULL &&
(track = (CDTIME *)malloc(sizeof(CDTIME)*99)) == NULL )
return 1;
do {
i = cdr_cdinfo(0,&type,&strt,&endt,track,&disc);
} while ( i == CDERR7 );
/*********************************
char tmp[80];
sprintf(tmp,"%d:%d:%d",disc.min,disc.sec,disc.frame);
wrtstr(tmp,30,1,0x15);
*********************************/
if ( disc.frame-- <= 0 ) {
disc.frame = 74;
if ( disc.sec-- <= 0 ) {
disc.sec = 59;
if ( disc.min-- <= 0 )
return 1;
}
}
if ( i == 0 ) {
track[endt].min = disc.min;
track[endt].sec = disc.sec;
track[endt].frame = disc.frame;
acv = 1;
}
return i;
}
void CD_play()
{
int i;
char tmp[80],ttl[40];
/* --------------- debug 91.08.28 Pumpkin ---------------- */
i = CDERR7;
while (i == CDERR7) {
i = cdr_mphase(0,&sts,&no,&st,&ed);
}
if ( i != 0 ) {
wrtstr("CDが正常にセットされていません ",30,1,0x12);
return;
}
/*********
if ( cdr_mphase(0,&sts,&no,(char *)&st,(char *)&ed) != 0 ) {
wrtstr("CDが正常にセットされていません?",30,1,0x12);
return;
}
********
/* ---------------------------------------------------------- */
if ( sts != 0 )
cdr_pause(0);
if ( CD_open() != 0 ) {
wrtstr("CD情報の読み取りに失敗しました",30,1,0x12);
return;
}
tmp[0] = '\0'; sprintf(ttl,"曲番(1-%d) ",endt);
if ( Input(tmp,ttl) != FALSE )
return;
if ( (no = atoi(tmp) - 1) < 0 || no >= endt ) no = 0;
/* ------------------ SIDEWORK 92.01.31 Pumpkin ----------------- */
/******
SND_elevol_set(1,vol,vol);
******/
/* ---------------------------------------------------------- */
if ( endt > 0 ) {
for ( i=no ; i < endt && (track[i].min & 0x80) != 0 ; i++ );
if ( cdr_mtplay(0,&(track[i]),&(track[endt])) != 0 )
wrtstr("正常に演奏出来ません",30,1,0x12);
}
if ( track != NULL )
free(track);
track = NULL;
cd_act = TRUE;
}
void CD_stop()
{
cdr_mstop(0);
if ( track != NULL )
free(track);
track = NULL;
cd_act = FALSE;
}
void CD_endof()
{
/* ------------------ CD No Stop 91.10.18 Pumpkin ----------- */
int i;
i = CDERR7;
while (i == CDERR7) {
i = cdr_mphase(0,&sts,&no,&st,&ed);
}
if ( cd_stop == TRUE && sts != 0)
cdr_mstop(0);
/*****
if ( cd_act != FALSE )
cdr_mstop(0);
*****/
/* ---------------------------------------------------------- */
}
void CD_vol()
{
char tmp[80];
/* ------------------ SIDEWORK 92.01.31 Pumpkin ------------- */
SND_elevol_read(1,&vol,&vol);
/* ---------------------------------------------------------- */
sprintf(tmp,"%d",vol);
if ( Input(tmp,"音量(0-127) ") != FALSE )
return;
vol = atoi(tmp);
SND_elevol_set(1,vol,vol);
}
void CD_menu()
{
static int no=ERR;
/* --------------- RED2 Like 92.01.31 Pumpkin ------------- */
static char *menu[]={
"P: CD Play 1. CD演奏する ",
"S: CD Stop 2. CD演奏を止める ",
"",
"V: Volume 3. 音量を設定する ",
"",
"E: Eup Play 4. EUPファイル演奏開始 ",
"T: Eup Stop 5. EUPファイル演奏停止 ",
NULL,
"1 CD演奏する ",
"2 CD演奏を止める ",
"",
"3 音量を設定する ",
"",
"4 EUPファイル演奏開始 ", /* customaized by YAMA */
"5 EUP演奏停止 ", /* customaized by YAMA */
NULL };
int m=0;
/**********
static char *menu[]={
"1 CD演奏する ",
"2 CD演奏を止める ",
"",
"3 音量を設定する ",
NULL };
**********/
/* ---------------------------------------------------------- */
wrtstr(SPCSTR,30,1,0x1F);
/* --------------- RED2 Like 92.01.31 Pumpkin ------------- */
if (cd_m_stat == TRUE) m = 8;
switch (Sel_menu(&menu[m],30,2,&no)) {
case FALSE:
break;
case LEFT:
if (cd_m_stat == FALSE) {
Dsp_vram(vram);
Cmds_PF4();
}
return;
case RIGHT:
if (cd_m_stat == FALSE) {
Dsp_vram(vram);
Cmds_PF1();
}
return;
default:
return;
}
/*****
if ( Sel_menu(menu,30,2,&no) != FALSE )
return;
*****/
/* ---------------------------------------------------------- */
if ( no == 0 )
CD_play();
else if ( no == 1 )
CD_stop();
else if ( no == 2 )
CD_vol();
/* --------------------- EUP play 92.03.30 ------------------ */
else if ( no == 3 ) /* customaized by YAMA */
runeup();
else if ( no == 4 ) /* customaized by YAMA */
stopeup();
/* ---------------------------------------------------------- */
}